Squid优化

Squid优化(一)

        几个SQUID重要参数:

  • maximum_object_size 是 能cache最大的文件大小.对应wmv,rm文件,建议设置为32768 kB
  • maximum_object_size_in_memory 是在内存中cache的最大文件大小.
  • cache_mem 是SQUID可用到的最大内存.经实践,4G内存的服务器用2G;超过2G导致SQUID运行不稳

        首先要分析SQUID所cache内容:

        运行

1
squidclient -p 80 cache_object://localhost/info

        能看到如下内容:

1
2
3
Storage Swap size: 7549104 KB
Storage Mem size: 418804 KB
Mean Object Size: 160.46 KB

        Mean Object Size是平均内容大小,一般要把maximum_object_size_in_memory设置成离它最近的128的倍数.在这个例子中maximum_object_size_in_memory 的值应该是256kB.

        cache_mem 一般设置成服务器内存的一半或更多,只要运行过程中LINUX没有使用SWAP就可以.

        再就是按业务分SQUID.

        比如某个论坛,用户能上载图片和视频;当然我们要把上载的图片、视频放在单独的域名上,比如img.example.com, video.example.com;这两个域名只提供静态文件服务.

        根据统计,图片的平均大小在100KB,视频的平均大小在4M,差别是很大,应该建两个squid分别作图片和视频的CACHE.图片SQUID的 maximum_object_size_in_memory 设置为256KB,视频的SQUID的maximum_object_size_in_memory设置为8196KB.

Squid优化(二)

        探讨动态内容的CACHE.

        BBS,论坛是典型动态内容,要保证内容更新及时的同时,提高访问速度,降低数据库负担不是个简单任务.经实践发现如下办法取得很好效果:

  1. 配置SQUID,对动态内容强制CACHE,用到的配置参数是refresh_pattern
    refresh_pattern ^/forum/viewthread.php 1440 1000% 1440 ignore-reload
    /forum/viewthread.php的内容将强制保持1天
  2. 修改论坛程序在用户回复帖子后,向SQUID发送PURGE命令清除相应帖子的页面CACHE,保证失效性

        实现过这一功能,但是有时候生效,有时候无效,还未进一步查明原因.(Edit by Sean)

  1. 有些频繁更新的页面可以不CACHE,用no_cache参数
1
2
acl no_forum_cache urlpath_regex ^/forum/forumdisplay.php
no_cache DENY no_forum_cache